package Logica;

import Acceso.AccesoReportes;
import Entidades.Proveedor;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/**
 *
 * @author HnosRodriguez
 */
public class LogicaGeneradorReporte {
    
    private static AccesoReportes acceso = new AccesoReportes();
    private static String consultaQuery = "";
    private static ArrayList<Proveedor> proveedores = new ArrayList<Proveedor>();
    private static File archivo;
    private static int contadorProveedores = 1, contadorEntrevista = 1;
    private static int contadorGlobal = 0, tamanoLista = 0;

    private static void refrescarContadores(){
        contadorProveedores = 1;
        contadorEntrevista = 1;
        contadorGlobal = 0;
        tamanoLista = 0;
    }

    public static void obtenerArchivoPuertosyEnlacesDedicados(int pregunta){

        refrescarContadores();

        consultaQuery = "SELECT A.CANTIDAD, B.NOMBRE, C.VEL_NOMBRE, D.LUG_NOMBRE "
                + "FROM HISTORICA A, (SELECT PP.PP_ID ID, P.PROV_NOMBRE NOMBRE "
                + "FROM PROVEEDOR P, PROV_PREG PP, PREGUNTA A  WHERE P.PROV_ID "
                + "= PP.PROV_ID AND A.PREG_ID = PP.PREG_ID AND A.PREG_ID = "
                + ""+pregunta+") B, VELOCIDAD C, LUGAR D WHERE A.PP_ID = B.ID "
                + "AND C.VEL_ID = A.VEL_ID AND C.VEL_TIPO = '1' "
                + "AND D.LUG_ID = A.LUG_ID ORDER BY A.HIS_ID;";

        System.out.println(consultaQuery);
        
        proveedores = acceso.obtenerHistoricoEnlacesPuertos(consultaQuery);

       if (pregunta == 3)
        archivo = new File("reportes/reportesPuertosConmutados.xls");
       else
        archivo = new File("reportes/reportesEnlacesDedicados.xls");

        tamanoLista = proveedores.size();

         try {

          if (archivo.createNewFile()){

            BufferedWriter bw = new BufferedWriter(new FileWriter(archivo));

                bw.write("<table border='2'>");

             if (pregunta == 3){

                bw.write("<tr><th colspan = '5'>Reporte para Puertos Conmutados</th></tr>");

                bw.write("<tr><th colspan = '5'>Tomando en cuenta sus "
                        + "sucursales y sedes &iquest;Cuantas Lineas Telefonicas "
                        + "Comerciales fijas tienen en la Empresa / "
                        + "Institucion actualmente?</th></tr>");
              }
             else {

                bw.write("<tr><th colspan = '5'>Reporte para Enlaces Dedicados</th></tr>");

                bw.write("<tr><th colspan = '5'>Tomando en cuenta sus "
                        + "sucursales y sedes &iquest;Cuantas Lineas Telefonicas "
                        + "CPA tienen en la Empresa / "
                        + "Institucion actualmente?</th></tr>");

              }
                bw.write("<tr><th colspan = '5'>Entrevista Nro: "
                        + ""+contadorEntrevista+"</th></tr>");

                bw.write("<tr><th> </th><th> Nombre del proveedor </th><th> "
                        + "Cantidad </th><th> Velocidad(es) </th>"
                        + "<th> Lugar </th></tr>");


            for (Proveedor p: proveedores){

              if (contadorProveedores == 6){

                  bw.write("<tr><th> </th><th> "+p.getProv_nombre()+" </th>"
                          + "<th> "+p.getCantidad()+" </th>"
                          + "<th> "+p.getVelocidadProveedor()+" </th><th> "
                         + ""+p.getLugarProveedor()+" </th></th>");

                  contadorGlobal++;
                  contadorEntrevista++;

               if (contadorGlobal != tamanoLista){

                   bw.write("<tr><th colspan = '5'>Entrevista Nro: "
                        + ""+contadorEntrevista+"</th></tr>");

                   bw.write("<tr><th> </th><th> Nombre del proveedor </th><th> "
                        + "Cantidad </th><th> Velocidad(es) </th>"
                        + "<th> Lugar </th></tr>");
               }

                  contadorProveedores = 1;
              }
              else {

                   bw.write("<tr><th> </th><th> "+p.getProv_nombre()+" </th>"
                          + "<th> "+p.getCantidad()+" </th>"
                          + "<th> "+p.getVelocidadProveedor()+" </th><th> "
                         + ""+p.getLugarProveedor()+" </th></th>");

                  contadorProveedores++;
                  contadorGlobal++;
              }

            }
                bw.write("</table>");
                bw.close();
                System.out.println("El fichero se ha creado correctamente");
          }

        else
            System.out.println("No ha podido ser creado el fichero");

        }
        catch (IOException ex) {
            System.out.println(ex.getMessage());
          }
   }

    public static void obtenerArchivoHistoricoLineasTelefonicasCPA(int pregunta){

        refrescarContadores();

        consultaQuery = "SELECT A.CANTIDAD, B.NOMBRE FROM HISTORICA A, "
                        + "(SELECT PP.PP_ID ID, P.PROV_NOMBRE NOMBRE "
                        + "FROM PROVEEDOR P, PROV_PREG PP, PREGUNTA A "
                        + "WHERE P.PROV_ID = PP.PROV_ID AND A.PREG_ID = "
                        + "PP.PREG_ID AND A.PREG_ID = "+pregunta+") B "
                        + "WHERE A.PP_ID = B.ID ORDER BY A.HIS_ID;";

        System.out.println(consultaQuery);
        proveedores = acceso.obtenerHistoricoLineasTelefonicas(consultaQuery);

       if (pregunta == 1)
        archivo = new File("reportes/reportesLineasTelefonicas.xls");
       else
        archivo = new File("reportes/reportesLineasCpa.xls");

        tamanoLista = proveedores.size();
        
         try {
             
          if (archivo.createNewFile()){
              
            BufferedWriter bw = new BufferedWriter(new FileWriter(archivo));
                
                bw.write("<table border='2'>");

             if (pregunta == 1){

                bw.write("<tr><th colspan = '3'>Reporte para lineas telefonicas</th></tr>");
                
                bw.write("<tr><th colspan = '3'>Tomando en cuenta sus "
                        + "sucursales y sedes &iquest;Cuantas Lineas Telefonicas "
                        + "Comerciales fijas tienen en la Empresa / "
                        + "Institucion actualmente?</th></tr>");
              }
             else {

                bw.write("<tr><th colspan = '3'>Reporte para lineas CPA</th></tr>");
                
                bw.write("<tr><th colspan = '3'>Tomando en cuenta sus "
                        + "sucursales y sedes &iquest;Cuantas Lineas Telefonicas "
                        + "CPA tienen en la Empresa / "
                        + "Institucion actualmente?</th></tr>");
                
              }
                bw.write("<tr><th colspan = '3'>Entrevista Nro: "
                        + ""+contadorEntrevista+"</th></tr>");
                
                bw.write("<tr><th> </th><th> Nombre del proveedor </th><th> "
                        + "Cantidad de lineas telefonicas </th></th>");
                
                              
            for (Proveedor p: proveedores){
                
              if (contadorProveedores == 6){
                 
                  bw.write("<tr><th> </th><th> "+p.getProv_nombre()+" </th><th> "
                         + ""+p.getCantidad()+" </th></th>");
                  contadorGlobal++;
                  contadorEntrevista++;

               if (contadorGlobal != tamanoLista){

                   bw.write("<tr><th colspan = '3'>Entrevista Nro: "
                        + ""+contadorEntrevista+"</th></tr>");
                  
                   bw.write("<tr><th> </th><th> Nombre del proveedor </th><th> "
                        + "Cantidad de lineas telefonicas</th></th>");
               }

                  contadorProveedores = 1;
              }
              else {
                  
                   bw.write("<tr><th> </th><th> "+p.getProv_nombre()+" </th><th> "
                         + ""+p.getCantidad()+" </th></th>");
                
                  contadorProveedores++;
                  contadorGlobal++;
              }

              

            }
                bw.write("</table>");
                bw.close();
                System.out.println("El fichero se ha creado correctamente");
          }
            
        else
            System.out.println("No ha podido ser creado el fichero");
         
        }
        catch (IOException ex) {
            System.out.println(ex.getMessage());
          }
        }
}
